using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkAnalystTools._Analysis
{
    /// <summary>
    /// <para>Make Closest Facility Analysis Layer</para>
    /// <para>Makes a closest facility network analysis layer and sets its analysis properties. A closest facility analysis layer is useful in determining the closest facility or facilities to an incident based on a specified travel mode. The layer can be created using a local network dataset or using a service hosted online or in a portal.</para>
    /// <para>创建最接近的设施点网络分析图层并设置其分析属性。最近设施点分析图层可用于根据指定的出行模式确定离事件点最近的设施点。可以使用本地网络数据集或使用在线或门户中托管的服务创建图层。</para>
    /// </summary>    
    [DisplayName("Make Closest Facility Analysis Layer")]
    public class MakeClosestFacilityAnalysisLayer : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public MakeClosestFacilityAnalysisLayer()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_network_data_source">
        /// <para>Network Data Source</para>
        /// <para>The network dataset or service on which the network analysis will be performed. Use the portal URL for a service.</para>
        /// <para>将对其执行网络分析的网络数据集或服务。使用服务的门户 URL。</para>
        /// </param>
        public MakeClosestFacilityAnalysisLayer(object _network_data_source)
        {
            this._network_data_source = _network_data_source;
        }
        public override string ToolboxName => "Network Analyst Tools";

        public override string ToolName => "Make Closest Facility Analysis Layer";

        public override string CallName => "na.MakeClosestFacilityAnalysisLayer";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_network_data_source, _layer_name, _travel_mode, _travel_direction.GetGPValue(), _cutoff, _number_of_facilities_to_find, _time_of_day, _time_zone.GetGPValue(), _time_of_day_usage.GetGPValue(), _line_shape.GetGPValue(), _accumulate_attributes, _generate_directions_on_solve.GetGPValue(), _out_network_analysis_layer];

        /// <summary>
        /// <para>Network Data Source</para>
        /// <para>The network dataset or service on which the network analysis will be performed. Use the portal URL for a service.</para>
        /// <para>将对其执行网络分析的网络数据集或服务。使用服务的门户 URL。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Data Source")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _network_data_source { get; set; }


        /// <summary>
        /// <para>Layer Name</para>
        /// <para>The name of the network analysis layer to create.</para>
        /// <para>要创建的网络分析图层的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Layer Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _layer_name { get; set; } = null;


        /// <summary>
        /// <para>Travel Mode</para>
        /// <para><xdoc>
        ///   <para>The name of the travel mode to use in the analysis. The travel mode represents a collection of network settings, such as travel restrictions and U-turn policies, that determine how a pedestrian, car, truck, or other medium of transportation moves through the network. Travel modes are defined on your network data source.</para>
        ///   <para>An arcpy.na.TravelMode object and a string containing the valid JSON representation of a travel mode can also be used as input to the parameter.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要在分析中使用的出行模式的名称。出行模式表示一组网络设置，例如出行限制和 U 形转弯策略，这些设置决定了行人、汽车、卡车或其他交通工具在网络中的移动方式。出行模式是在网络数据源上定义的。</para>
        ///   <para>还可以将 arcpy.na.TravelMode 对象和包含出行模式的有效 JSON 表示形式的字符串用作参数的输入。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Travel Mode")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _travel_mode { get; set; } = null;


        /// <summary>
        /// <para>Travel Direction</para>
        /// <para><xdoc>
        ///   <para>Specifies the direction of travel between facilities and incidents.</para>
        ///   <bulletList>
        ///     <bullet_item>Toward facilities—Direction of travel is from incidents to facilities. Retail stores commonly use this setting, since they are concerned with the time it takes the shoppers (incidents) to reach the store (facility). This is the default.</bullet_item><para/>
        ///     <bullet_item>Away from facilities—Direction of travel is from facilities to incidents. Fire departments commonly use this setting, since they are concerned with the time it takes to travel from the fire station (facility) to the location of the emergency (incident).</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The direction of travel may influence the facilities found if the network contains one-way streets or impedances based on the direction of travel. For instance, it might take 10 minutes to drive from a particular incident to a particular facility, but the journey might take 15 minutes traveling in the other direction, from the facility to the incident, because of one-way streets or different traffic conditions.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定设施点和事件点之间的行进方向。</para>
        ///   <bulletList>
        ///     <bullet_item>朝向设施点 - 行进方向是从事件点到设施点。零售商店通常使用此设置，因为他们关心购物者（事件）到达商店（设施）所需的时间。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>远离设施点 - 行进方向是从设施点到事件点。消防部门通常使用此设置，因为他们关心从消防局（设施）到紧急情况（事件）地点所需的时间。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果网络包含单向街道或基于行进方向的阻抗，则行进方向可能会影响找到的设施点。例如，从特定事件点开车到特定设施点可能需要 10 分钟，但由于单行道或不同的交通状况，从设施点到事件点，另一个方向的旅程可能需要 15 分钟。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Travel Direction")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _travel_direction_value _travel_direction { get; set; } = _travel_direction_value._TO_FACILITIES;

        public enum _travel_direction_value
        {
            /// <summary>
            /// <para>Toward facilities</para>
            /// <para>Toward facilities—Direction of travel is from incidents to facilities. Retail stores commonly use this setting, since they are concerned with the time it takes the shoppers (incidents) to reach the store (facility). This is the default.</para>
            /// <para>朝向设施点 - 行进方向是从事件点到设施点。零售商店通常使用此设置，因为他们关心购物者（事件）到达商店（设施）所需的时间。这是默认设置。</para>
            /// </summary>
            [Description("Toward facilities")]
            [GPEnumValue("TO_FACILITIES")]
            _TO_FACILITIES,

            /// <summary>
            /// <para>Away from facilities</para>
            /// <para>Away from facilities—Direction of travel is from facilities to incidents. Fire departments commonly use this setting, since they are concerned with the time it takes to travel from the fire station (facility) to the location of the emergency (incident).</para>
            /// <para>远离设施点 - 行进方向是从设施点到事件点。消防部门通常使用此设置，因为他们关心从消防局（设施）到紧急情况（事件）地点所需的时间。</para>
            /// </summary>
            [Description("Away from facilities")]
            [GPEnumValue("FROM_FACILITIES")]
            _FROM_FACILITIES,

        }

        /// <summary>
        /// <para>Cutoff</para>
        /// <para>The impedance value at which to stop searching for facilities for a given incident in the units of the impedance attribute used by your chosen Travel Mode. This cutoff can be overridden on a per-incident basis by specifying individual cutoff values in the incidents sublayer when the Travel Direction is Toward facilities or on a per-facility basis by specifying individual cutoff values in the facilities sublayer when the Travel Direction is Away from facilities. By default, no cutoff is used for the analysis.</para>
        /// <para>停止搜索给定事件的设施点的阻抗值，以所选出行模式使用的阻抗属性为单位。当行进方向为“朝向设施点”时，可以通过在“事件点”子图层中指定单个截止值来覆盖此临界值，或者当“行进方向”为“远离设施点”时，通过在“行进方向”时在“设施点”子图层中指定单个截止值，可以基于每个事件点覆盖此截止值。默认情况下，分析不使用截止值。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cutoff")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double? _cutoff { get; set; } = null;


        /// <summary>
        /// <para>Number of Facilities to Find</para>
        /// <para>The number of closest facilities to find per incident. This default can be overridden by specifying an individual value for the TargetFacilityCount property in the incidents sublayer. The default number of facilities to find is one.</para>
        /// <para>每个事件要查找的最近设施点数。可以通过在事件子图层中为 TargetFacilityCount 属性指定单个值来覆盖此默认值。要查找的默认设施点数为 1。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number of Facilities to Find")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _number_of_facilities_to_find { get; set; } = 1;


        /// <summary>
        /// <para>Time of Day</para>
        /// <para><xdoc>
        ///   <para>Specifies the time and date at which the routes should begin or end. The interpretation of this value depends on whether Time of Day Usage is set to be the start time or the end time of the route.</para>
        ///   <para>If you have chosen a traffic-based impedance attribute, the solution will be generated given dynamic traffic conditions at the time of day specified here. A date and time can be specified as 5/14/2012 10:30 AM.</para>
        ///   <para>Instead of using a particular date, a day of the week can be specified using the following dates:
        ///   <bulletList>
        ///     <bullet_item>Today—12/30/1899  </bullet_item><para/>
        ///     <bullet_item>Sunday—12/31/1899  </bullet_item><para/>
        ///     <bullet_item>Monday—1/1/1900  </bullet_item><para/>
        ///     <bullet_item>Tuesday—1/2/1900  </bullet_item><para/>
        ///     <bullet_item>Wednesday—1/3/1900  </bullet_item><para/>
        ///     <bullet_item>Thursday—1/4/1900  </bullet_item><para/>
        ///     <bullet_item>Friday—1/5/1900  </bullet_item><para/>
        ///     <bullet_item>Saturday—1/6/1900  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定路由开始或结束的时间和日期。此值的解释取决于“使用时间”是设置为路由的开始时间还是结束时间。</para>
        ///   <para>如果选择了基于流量的阻抗属性，则将在此处指定的一天中的时间根据动态流量条件生成解决方案。日期和时间可以指定为 2012 年 5 月 14 日上午 10：30。</para>
        /// 可以使用<para>以下日期指定星期几，而不是使用特定日期：
        ///   <bulletList>
        ///     <bullet_item>今天 - 1899 年 12 月 30 日</bullet_item><para/>
        ///     <bullet_item>星期日—1899年12月31日</bullet_item><para/>
        ///     <bullet_item>星期一 - 1/1/1900</bullet_item><para/>
        ///     <bullet_item>星期二 - 1/2/1900</bullet_item><para/>
        ///     <bullet_item>星期三 - 1/3/1900</bullet_item><para/>
        ///     <bullet_item>星期四—1/4/1900</bullet_item><para/>
        ///     <bullet_item>星期五 - 1/5/1900</bullet_item><para/>
        ///     <bullet_item>星期六 - 1/6/1900</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time of Day")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _time_of_day { get; set; } = null;


        /// <summary>
        /// <para>Time Zone</para>
        /// <para><xdoc>
        ///   <para>The time zone of the Time of Day parameter.</para>
        ///   <bulletList>
        ///     <bullet_item>Local time at locations—The Time of Day parameter refers to the time zone in which the facilities or incidents are located. This is the default.
        ///     <bulletList>
        ///       <bullet_item>If Time of Day Usage is set to Start time and Travel Direction is Away from facilities, this is the time zone of the facilities.  </bullet_item><para/>
        ///       <bullet_item>If Time of Day Usage is set to Start time and Travel Direction is Towards facilities, this is the time zone of the incidents.  </bullet_item><para/>
        ///       <bullet_item>If Time of Day Usage is set to End time and Travel Direction is Away from facilities, this is the time zone of the incidents.  </bullet_item><para/>
        ///       <bullet_item>If Time of Day Usage is set to End time and Travel Direction is Towards facilities, this is the time zone of the facilities.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>UTC—The Time of Day parameter refers to Coordinated Universal Time (UTC). Choose this option if you want to find what's nearest for a specific time, such as now, but aren't certain in which time zone the facilities or incidents will be located.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>时间参数的时区。</para>
        ///   <bulletList>
        /// <bullet_item>位置的本地时间 - 时间参数是指设施点或事件点所在的时区。这是默认设置。
        ///     <bulletList>
        ///       <bullet_item>如果“一天中的使用时间”设置为“开始时间”，并且“行驶方向”为“远离设施点”，则这是设施点的时区。</bullet_item><para/>
        ///       <bullet_item>如果“一天中的使用时间”设置为“开始时间”，并且“行驶方向”为“朝向设施点”，则这是事件的时区。</bullet_item><para/>
        ///       <bullet_item>如果“使用时间”设置为“结束时间”，并且“行驶方向”为“远离设施点”，则这是事件的时区。</bullet_item><para/>
        ///       <bullet_item>如果“使用时间”设置为“结束时间”，并且“行驶方向”为“朝向设施点”，则这是设施点的时区。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>UTC - 时间参数是指协调世界时 （UTC）。如果要查找特定时间（例如现在）最近的地点，但不确定设施或事件点将位于哪个时区，请选择此选项。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_zone_value _time_zone { get; set; } = _time_zone_value._LOCAL_TIME_AT_LOCATIONS;

        public enum _time_zone_value
        {
            /// <summary>
            /// <para>UTC</para>
            /// <para>UTC—The Time of Day parameter refers to Coordinated Universal Time (UTC). Choose this option if you want to find what's nearest for a specific time, such as now, but aren't certain in which time zone the facilities or incidents will be located.</para>
            /// <para>UTC - 时间参数是指协调世界时 （UTC）。如果要查找特定时间（例如现在）最近的地点，但不确定设施或事件点将位于哪个时区，请选择此选项。</para>
            /// </summary>
            [Description("UTC")]
            [GPEnumValue("UTC")]
            _UTC,

            /// <summary>
            /// <para>Local time at locations</para>
            /// <para>Local time at locations—The Time of Day parameter refers to the time zone in which the facilities or incidents are located. This is the default.</para>
            /// <para>位置的本地时间 - 时间参数是指设施点或事件点所在的时区。这是默认设置。</para>
            /// </summary>
            [Description("Local time at locations")]
            [GPEnumValue("LOCAL_TIME_AT_LOCATIONS")]
            _LOCAL_TIME_AT_LOCATIONS,

        }

        /// <summary>
        /// <para>Time of Day Usage</para>
        /// <para><xdoc>
        ///   <para>Indicates whether the value of the Time of Day parameter represents the arrival or departure time for the route or routes.</para>
        ///   <bulletList>
        ///     <bullet_item>Start time—Time of Day is interpreted as the departure time from the facility or incident. This is the default.When this setting is chosen, Time of Day indicates the solver should find the best route given a departure time.</bullet_item><para/>
        ///     <bullet_item>End time—Time of Day is interpreted as the arrival time at the facility or incident. This option is useful if you want to know what time to depart from a location so you arrive at the destination at the time specified in Time of Day.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指示“时间”参数的值是表示一个或多个路线的到达时间还是离开时间。</para>
        ///   <bulletList>
        ///     <bullet_item>开始时间 - 一天中的时间被解释为从设施点或事件点出发的时间。这是默认设置。选择此设置后，Time of Day 指示求解器应找到给定出发时间的最佳路线。</bullet_item><para/>
        ///     <bullet_item>结束时间 - 一天中的时间被解释为到达设施点或事件点的时间。如果您想知道从某个位置出发的时间，以便在一天中的时间指定的时间到达目的地，则此选项非常有用。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time of Day Usage")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_of_day_usage_value _time_of_day_usage { get; set; } = _time_of_day_usage_value._START_TIME;

        public enum _time_of_day_usage_value
        {
            /// <summary>
            /// <para>Start time</para>
            /// <para>Start time—Time of Day is interpreted as the departure time from the facility or incident. This is the default.When this setting is chosen, Time of Day indicates the solver should find the best route given a departure time.</para>
            /// <para>开始时间 - 一天中的时间被解释为从设施点或事件点出发的时间。这是默认设置。选择此设置后，Time of Day 指示求解器应找到给定出发时间的最佳路线。</para>
            /// </summary>
            [Description("Start time")]
            [GPEnumValue("START_TIME")]
            _START_TIME,

            /// <summary>
            /// <para>End time</para>
            /// <para>End time—Time of Day is interpreted as the arrival time at the facility or incident. This option is useful if you want to know what time to depart from a location so you arrive at the destination at the time specified in Time of Day.</para>
            /// <para>结束时间 - 一天中的时间被解释为到达设施点或事件点的时间。如果您想知道从某个位置出发的时间，以便在一天中的时间指定的时间到达目的地，则此选项非常有用。</para>
            /// </summary>
            [Description("End time")]
            [GPEnumValue("END_TIME")]
            _END_TIME,

        }

        /// <summary>
        /// <para>Line Shape</para>
        /// <para><xdoc>
        ///   <para>Specifies the shape type for the route features that are output by the analysis.</para>
        ///   <para>No matter which output shape type is chosen, the best route is always determined by the network impedance, never Euclidean distance. This means that only the route shapes are different, not the underlying traversal of the network.</para>
        ///   <bulletList>
        ///     <bullet_item>Along network—The output routes will have the exact shape of the underlying network sources. The output includes route measurements for linear referencing. The measurements increase from the first stop and record the cumulative impedance to reach a given position.</bullet_item><para/>
        ///     <bullet_item>No lines—No shape will be generated for the output routes.</bullet_item><para/>
        ///     <bullet_item>Straight lines—The output route shape will be a single straight line between the stops.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定分析输出的路径要素的形状类型。</para>
        ///   <para>无论选择哪种输出形状类型，最佳路由始终由网络阻抗决定，而不是欧几里得距离。这意味着只有路由形状不同，而网络的基础遍历不同。</para>
        ///   <bulletList>
        ///     <bullet_item>沿网络 - 输出路由将具有基础网络源的确切形状。输出包括用于线性参考的路径测量值。测量值从第一站开始增加，并记录累积阻抗以达到给定位置。</bullet_item><para/>
        ///     <bullet_item>无线 - 不会为输出路径生成任何形状。</bullet_item><para/>
        ///     <bullet_item>直线—输出路径形状将为停靠点之间的一条直线。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Line Shape")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _line_shape_value _line_shape { get; set; } = _line_shape_value._ALONG_NETWORK;

        public enum _line_shape_value
        {
            /// <summary>
            /// <para>No lines</para>
            /// <para>No lines—No shape will be generated for the output routes.</para>
            /// <para>无线 - 不会为输出路径生成任何形状。</para>
            /// </summary>
            [Description("No lines")]
            [GPEnumValue("NO_LINES")]
            _NO_LINES,

            /// <summary>
            /// <para>Straight lines</para>
            /// <para>Straight lines—The output route shape will be a single straight line between the stops.</para>
            /// <para>直线—输出路径形状将为停靠点之间的一条直线。</para>
            /// </summary>
            [Description("Straight lines")]
            [GPEnumValue("STRAIGHT_LINES")]
            _STRAIGHT_LINES,

            /// <summary>
            /// <para>Along network</para>
            /// <para>Along network—The output routes will have the exact shape of the underlying network sources. The output includes route measurements for linear referencing. The measurements increase from the first stop and record the cumulative impedance to reach a given position.</para>
            /// <para>沿网络 - 输出路由将具有基础网络源的确切形状。输出包括用于线性参考的路径测量值。测量值从第一站开始增加，并记录累积阻抗以达到给定位置。</para>
            /// </summary>
            [Description("Along network")]
            [GPEnumValue("ALONG_NETWORK")]
            _ALONG_NETWORK,

        }

        /// <summary>
        /// <para>Accumulate Attributes</para>
        /// <para><xdoc>
        ///   <para>A list of cost attributes to be accumulated during analysis. These accumulated attributes are for reference only; the solver only uses the cost attribute used by your designated travel mode when solving the analysis.</para>
        ///   <para>For each cost attribute that is accumulated, a Total_[Impedance] property is populated in the network analysis output features.</para>
        ///   <para>This parameter is not available if the network data source is an ArcGIS Online service or the network data source is a service on a version of Portal for ArcGIS that does not support accumulation.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在分析期间要累积的成本属性列表。这些累积属性仅供参考;求解器在求解分析时仅使用指定出行模式使用的成本属性。</para>
        ///   <para>对于累积的每个成本属性，将在网络分析输出要素中填充一个 Total_[Impedance] 属性。</para>
        ///   <para>如果网络数据源是 ArcGIS Online 服务，或者网络数据源是不支持累积的 Portal for ArcGIS 版本上的服务，则此参数不可用。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Accumulate Attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _accumulate_attributes { get; set; } = null;


        /// <summary>
        /// <para>Generate Directions on Solve</para>
        /// <para><xdoc>
        ///   <para>Specifies whether directions will be generated when running the analysis.
        ///   <bulletList>
        ///     <bullet_item>Checked—Indicates that the turn-by-turn directions will be generated on solve.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Indicates that the turn-by-turn directions will not be generated on solve. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For an analysis in which generating turn-by-turn directions is not needed, leaving this option unchecked will considerably reduce the time it takes to solve the analysis.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在运行分析时是否生成方向。
        ///   <bulletList>
        ///     <bullet_item>选中 （Checked） - 指示将在求解时生成逐向转弯方向。</bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 表示求解时不会生成逐向转弯方向。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>对于不需要生成逐向导航的分析，不选中此选项将大大减少求解分析所需的时间。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Generate Directions on Solve")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _generate_directions_on_solve_value _generate_directions_on_solve { get; set; } = _generate_directions_on_solve_value._false;

        public enum _generate_directions_on_solve_value
        {
            /// <summary>
            /// <para>DIRECTIONS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DIRECTIONS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DIRECTIONS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DIRECTIONS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Network Analyst Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Analyst Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_network_analysis_layer { get; set; }


        public MakeClosestFacilityAnalysisLayer SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}